print("------------------9.2 使用类和实例--------------------")
# 类编写好后，你的大部分时间将花在使用根据类创建的实例上。
# 你需要完成的首要任务之一是，修改实例的属性。
# 既可以直接修改实例的属性，也可以编写方法以特定的方式进行修改。

print("------------------9.2.1 创建Car类--------------------")
class Car():
    """一次模拟汽车的简单尝试"""
    def __init__(self, make, model, year):
        """初始化描述汽车的属性"""
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0
    def get_descriptive_name(self):
        """返回整洁的描述性信息"""
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()
    def read_odometer(self):
        """打印一条指出汽车里程的消息"""
        print("This car has " + str(self.odometer_reading) + " miles on it.")
    def update_odometer(self, mileage):
        """
        将里程表读数设置为指定的值
        禁止将里程表读数往回调
        """
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")
    def increment_odometer(self, miles):
        """将里程表读数增加指定的量"""
        self.odometer_reading += miles

print("------------------9.2.2 给属性指定默认值--------------------")

my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(100)
my_new_car.read_odometer()

my_new_car.increment_odometer(100)
my_new_car.read_odometer()

print("------------------9.2.3 修改属性的值--------------------")
# 可以用三种不同的方式修改属性的值：
# 1.直接通过实例修改，
# 2.通过方法设置，
# 3.以及通过方法递增（增加特定的值）。

print("------------------9.2.3 1-直接修改属性的值--------------------")
my_new_car = Car('BYD', '宋DM', 2019)
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading = 23
my_new_car.read_odometer()

print("------------------9.2.3 2-通过方法修改属性的值--------------------")
my_new_car = Car('BYD', '宋DM', 2019)
my_new_car.update_odometer(100)
my_new_car.read_odometer()

my_new_car.update_odometer(50)
my_new_car.read_odometer()

print("------------------9.2.3 3-通过方法对属性的值进行递增--------------------")
my_new_car.increment_odometer(100)
my_new_car.read_odometer()